package easy.demo07;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: wfmiss
 * @Date: 2023/12/15/16:51
 * @Description:
 * 题目来源：力扣 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/
 * 28. 找出字符串中第一个匹配项的下标
 * 给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标（下标从 0 开始）。
 * 如果 needle 不是 haystack 的一部分，则返回  -1 。
 */
public class Solution {
    public static void main(String[] args) {
        /**
         * 测试用例：
         * 示例 1：
         * 输入：haystack = "sadbutsad", needle = "sad"
         * 输出：0
         * 解释："sad" 在下标 0 和 6 处匹配。
         * 第一个匹配项的下标是 0 ，所以返回 0 。
         *
         * 示例 2：
         * 输入：haystack = "leetcode", needle = "leeto"
         * 输出：-1
         * 解释："leeto" 没有在 "leetcode" 中出现，所以返回 -1 。
         */
        System.out.println(strStr("ppi","pi"));
    }

    public static int strStr(String haystack, String needle) {
        // 方法一：（使用工具类）
        // return haystack.indexOf(needle);
        // 方法二：（自己写）

        int j=0,x=0;
        for (int i = 0;i+needle.length()-1<haystack.length(); i++) {
            if(haystack.charAt(i)==needle.charAt(j)){
                x=i;
                while (j<needle.length()){
                    if (haystack.charAt(i++)!=needle.charAt(j++)){
                        i=x;
                        j=0;
                        break;
                    }
                }
                if (j==needle.length())return x;
            }
        }
        return -1;
    }

}
